<?php
/**
 * Controller_Admin_Article
 *
 * Класс Controller_Admin_Article отвечает за обработку статей в админке
 *
 * @author Mike
 */
class Controller_Admin_Article extends Controller_Admin {

	/**
	 * Выбор действия по URL
	 *
	 */
	public function action() {
		if(!User_Seance::isAdmin()) throw new Exception('', 403);
		switch ($this->arrRequest[2]) {
			case '': case 'list': // Список статей
				$this->actionList();
			  	break;
			case 'add': // Добавление статьи
				$this->actionAdd();
				break;
			case 'edit': // Реактирование статьи
				if (!is_numeric($this->arrRequest[3])) throw new Exception('', 404);
				$objArticle = new Article($this->arrRequest[3]);
				if (!$objArticle->id) throw new Exception('', 404);
				$this->actionEdit($objArticle);				
				break;
			default: throw new Exception('', 404);
		}
	}

	/**
	 * Выводит список существующих страниц
	 * 
	 */
	public function actionList() {
		$objArticle = new Article();
	  	$arrArticles = $objArticle->find('all', array('order' => "`article_name` ASC"));
		
	  	$this->title = 'Список страниц';
	  	$this->pageHead = 'Список страниц (<a href="' . W_ADMIN . 'articles/add">Добавить</a>)';
	  
	  	$this->showHeader();
	    	View_Article::showAdminArticles($arrArticles);
		$this->showFooter();
	}
	
	/**
	 * Страница добавления статей 
	 */
	public function actionAdd() {
		if (isset($_POST['Article'])) {
			$objArticle = new Article($_POST['Article']);
			if ($objArticle->save()) User_Seance::moveTo(W_ADMIN . 'articles/edit/' . $objArticle->id);
		}
		else $objArticle = new Article();
		
	  	$this->title = 'Добавление страницы';

	  	$this->showHeader();
	   		View_Article::showEditForm($objArticle);
		$this->showFooter();
	}
	
  /**
   * Выводит страницу редактирования статьи
   * 
   * @param Article $objArticle - объект статьи для редактирования
   */
	public function actionEdit(Article $objArticle) {
		$editId = $objArticle->id;
  		if (isset($_POST['Article'])) {
			$objArticle = new Article($_POST['Article']);
			if ($objArticle->id != $editId) $objArticle->errorValidated('ID_article', 'Недопустимое действие');
			if ($objArticle->save()) User_Seance::moveTo(W_ADMIN . 'articles');
		}
  	
  		$this->title = $this->title = 'Редактирование статьи "' . $objArticle->getField('article_name') . '"';
    
  		$this->showHeader();
     		View_Article::showEditForm($objArticle);
    	$this->showFooter();
  	}
}
?>